使用rust创建websocket服务器

您所在的位置:网站首页 rust 服务端socket 使用rust创建websocket服务器

使用rust创建websocket服务器

2023-08-08 18:36| 来源: 网络整理| 查看: 265

最近需要做实时推送相关的应用,所以继续调研了一下websocket,在15年底的时候曾经使用过 Gru 来做聊天推送, 但是那时候没仔细研究过websocket的细节。现在趁机自己构思一下

使用 ws-rs 构建websocket服务端

按照 Guide 搭建服务端应用,代码见下:

cargo new ws-server1 --bin extern crate ws; use ws::listen; fn main() { listen("127.0.0.1:3012", |out| { move |msg| { println!("received msg: {}", msg); out.broadcast(msg) } }).unwrap() }

cargo run 运行服务端

服务端推送

往socket里面推送消息,代码见下:

cargo new ws-client1 --bin extern crate ws; use ws::{connect, CloseCode}; fn main() { connect("ws://127.0.0.1:3012", |out| { out.send("Hello WebSocket").unwrap(); move |msg| { println!("Got message: {}", msg); out.close(CloseCode::Normal) } }).unwrap() }

运行 cargo run,这时候会看到服务端输出received msg: Hello WebSocket,客户端输出Got message: Hello WebSocket

客户端连接

创建2个websocket客户端连接,打开2个chrome标签,分别在终端执行

ws = new WebSocket('ws://127.0.0.1:3012'); // 创建连接 ws.addEventListener('message', function (event) { console.log('Message from server ', event.data); }); // 监听服务端 ws.send('from browser'); // 可以在2个console中互相发消息玩

能发现websocket会自动检测连接,如果连接断开会提示 =WebSocket is already in CLOSING or CLOSED state.= 这也省去了手动发送心跳包 检测连接的麻烦



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3